package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * 一、JSR303
 * 1) 给Bean添加校验注解，javax.validation.constraints,并定义自己的message提示
 * 2） 开启校验功能 @Valid
 * 效果：校验错误以后会有默认的响应
 * 3) 给校验的bean后紧跟着一个BindingResult,就可以获取到校验的结果
 * 4）分组校验：（完成多场景的复杂校验）
 *    1.@NotBlank(message = "品牌名必须提交",groups = {UpdateGroup.class,AddGroup.class})
 *    给校验注解标注什么情况下需要进行校验
 *    2.@Validated({AddGroup.class}
 *    3.默认没有指定分组的校验注解@NotBlank，在分组校验情况@Validated({AddGroup.class}下不会生效
 * 5) 自定义校验注解：
 *   1.编写一个自定义校验注解
 *   2.编写一个自定义校验器
 *   3.关联自定义校验器和自定义的校验注解
 * 二、统一异常处理
 * @RestControllerAdvice  =  @ControllerAdvice  + @ResponseBody
 * 1.编写异常处理类，使用@RestControllerAdvice
 * 2.使用@ExceptionHandler(value = Exception.class) 标注方法 可以处理对应异常
 */
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@EnableDiscoveryClient // 开启服务注册发现功能
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
